package br.nsi.ardae.banco_teste;

import java.sql.*;
import java.util.*;



public class SimulaLocal {

	private static SimulaLocal unique = null;
	private static final int qtdLocal = 500;
	
	private static List<String> listaCidades;
	private static List<String> listaEstados;
	private static List<String> listaPaises;
	
	private SimulaLocal(){
		createListaCidades();
		createListaEstados();
		createListaPaises();
	}
	
	public static SimulaLocal newSimulaLocal(){
		if(SimulaLocal.unique == null) unique = new SimulaLocal();
		
		return SimulaLocal.unique;
	}
	
	public static int getQtdLocal(){
		return SimulaLocal.qtdLocal;
	}
	
	private void createListaCidades(){
		SimulaLocal.listaCidades = new ArrayList<String>();
		
		SimulaLocal.listaCidades.add("Campos");
		SimulaLocal.listaCidades.add("Itaperuna");
		SimulaLocal.listaCidades.add("Sao_Fidelis");
		SimulaLocal.listaCidades.add("Sao_Francisco");
		SimulaLocal.listaCidades.add("Sao_Joao_Da_Barra");
		SimulaLocal.listaCidades.add("Macae");
		SimulaLocal.listaCidades.add("Cabo_Frio");
		SimulaLocal.listaCidades.add("Casimiro");
		SimulaLocal.listaCidades.add("Niteroi");
		SimulaLocal.listaCidades.add("Rio_de_Janeiro");
		SimulaLocal.listaCidades.add("Parati");
		SimulaLocal.listaCidades.add("Angra");
		SimulaLocal.listaCidades.add("Resende");
		SimulaLocal.listaCidades.add("Friburgo");
		SimulaLocal.listaCidades.add("Petropolis");
	}
	
	private void createListaEstados(){
		SimulaLocal.listaEstados = new ArrayList<String>();
		
		SimulaLocal.listaEstados.add("RJ");
		SimulaLocal.listaEstados.add("SP");
		SimulaLocal.listaEstados.add("MG");
		SimulaLocal.listaEstados.add("ES");
		SimulaLocal.listaEstados.add("PR");
		SimulaLocal.listaEstados.add("RS");
		SimulaLocal.listaEstados.add("SC");
		SimulaLocal.listaEstados.add("GO");
		SimulaLocal.listaEstados.add("MT");
		SimulaLocal.listaEstados.add("MS");
		SimulaLocal.listaEstados.add("AM");
		SimulaLocal.listaEstados.add("PA");
		SimulaLocal.listaEstados.add("RO");
		SimulaLocal.listaEstados.add("RR");
		SimulaLocal.listaEstados.add("AC");
	}
	
	private void createListaPaises(){
		SimulaLocal.listaPaises = new ArrayList<String>();
		
		SimulaLocal.listaPaises.add("Brasil");
		SimulaLocal.listaPaises.add("Argentina");
		SimulaLocal.listaPaises.add("Chile");
		SimulaLocal.listaPaises.add("Paraguai");
		SimulaLocal.listaPaises.add("Uruguai");
		SimulaLocal.listaPaises.add("Bolivia");
		SimulaLocal.listaPaises.add("Equador");
		SimulaLocal.listaPaises.add("Fran�a");
		SimulaLocal.listaPaises.add("Inglaterra");
		SimulaLocal.listaPaises.add("Italia");
		SimulaLocal.listaPaises.add("Alemanha");
		SimulaLocal.listaPaises.add("Russia");
		SimulaLocal.listaPaises.add("Grecia");
		SimulaLocal.listaPaises.add("Marrocos");
		SimulaLocal.listaPaises.add("Africa_Do_Sul");
		SimulaLocal.listaPaises.add("Costa_Do_Marfim");
		SimulaLocal.listaPaises.add("Japao");
		SimulaLocal.listaPaises.add("China");
		SimulaLocal.listaPaises.add("Korea");
		SimulaLocal.listaPaises.add("Tailandia");
	}
	
	private String getCidade(){
		return (String) this.listaCidades.get((int)(100*Math.random() % 15));
	}
	
	private String getEstado(){
		return (String) this.listaEstados.get((int)(100*Math.random() % 15));
	}
	
	private String getPais(){
		return (String) this.listaPaises.get((int)(100*Math.random() % 20));
	}
	
	public void inserirLocal(Connection conexao) throws SQLException{
	
		String cidade = this.getCidade();
		String estado = this.getEstado();
		String pais = this.getPais();
		
		System.out.println("cidade: "+cidade+" estado: "+estado+" pais: "+pais);
		
		PreparedStatement pstmt = conexao.prepareStatement("Insert into local (cidade, estado, pais) values (?,?,?)");
		pstmt.setString(1, cidade);
		pstmt.setString(2, estado);
		pstmt.setString(3, pais);
		pstmt.executeUpdate();
		pstmt.close();
	}
}
